|
| NQ_BOOL | syIsSocketAlive (SYSocketHandle sock) |
| |
| NQ_STATUS | syShutdownSocket (SYSocketHandle sock) |
| |
| NQ_STATUS | syCloseSocket (SYSocketHandle sock) |
| |
| NQ_STATUS | syListenSocket (SYSocketHandle sock, NQ_INT backlog) |
| |
| SYSocketHandle | syCreateSocket (NQ_BOOL stream, NQ_UINT family) |
| |
| NQ_STATUS | syBindSocket (SYSocketHandle sock, const NQ_IPADDRESS *ip, NQ_PORT port, NQ_BOOL reuseAddress) |
| |
| NQ_STATUS | syAllowBroadcastsSocket (SYSocketHandle sock) |
| |
| void | sySetClientSocketOptions (SYSocketHandle sock) |
| |
| void | syGetSocketPortAndIP (SYSocketHandle sock, NQ_IPADDRESS *ip, NQ_PORT *port) |
| |
| NQ_INT | sySendToSocket (SYSocketHandle sock, const NQ_BYTE *buf, NQ_COUNT len, const NQ_IPADDRESS *ip, NQ_PORT port) |
| |
| NQ_STATUS | syConnectSocket (SYSocketHandle sock, const NQ_IPADDRESS *ip, NQ_PORT port) |
| |
| NQ_INT | sySendSocket (SYSocketHandle sock, const NQ_BYTE *buf, NQ_COUNT len) |
| |
| NQ_STATUS | sySendSocketAsync (SYSocketHandle sock, const NQ_BYTE *buf, NQ_COUNT len, void(*releaseFunc)(const NQ_BYTE *)) |
| |
| NQ_INT | sySelectSocket (SYSocketSet *pset, NQ_UINT32 timeout) |
| |
| NQ_INT | syRecvFromSocket (SYSocketHandle sock, NQ_BYTE *buf, NQ_COUNT len, NQ_IPADDRESS *ip, NQ_PORT *port) |
| |
| NQ_INT | syRecvSocket (SYSocketHandle sock, NQ_BYTE *buf, NQ_COUNT len) |
| |
| NQ_INT | syRecvSocketWithTimeout (SYSocketHandle sock, NQ_BYTE *buf, unsigned int len, unsigned int secs) |
| |
| SYSocketHandle | syAcceptSocket (SYSocketHandle sock, NQ_IPADDRESS *ip, NQ_PORT *port) |
| |
| NQ_STATUS | sySendMulticast (SYSocketHandle socket, const NQ_BYTE *buffer, NQ_COUNT length, const NQ_IPADDRESS *ip, NQ_PORT port) |
| |
| void | sySubscribeToMulticast (SYSocketHandle socket, const NQ_IPADDRESS *ip) |
| |
Sockets
Most socket operations are BSD 4.x standard calls. However, a few very specific operations are OS-dependent. For a BSD-compliant system use definitions below
Definition of "loopback address". This may be different for different OS. The standard value is 127.0.0.1 for IPv4 and ::1 for IPv6 (in NBO), however, some OS require a value of O.
| #define SY_INTERNALSOCKETPOOL |
Define this parameter to use internal socket pool, comment for per-task pool
| #define SYSocketSet fd_set |
| #define syIsValidSocket |
( |
|
_sock | ) |
(_sock != ERROR) |
| #define syInvalidSocket |
( |
| ) |
(ERROR) |
| #define syAddSocketToSet |
( |
|
_sock, |
|
|
|
_set |
|
) |
| FD_SET((_sock), (_set)) |
| #define syIsSocketSet |
( |
|
_sock, |
|
|
|
_set |
|
) |
| FD_ISSET((_sock), (_set)) |
| #define syClearSocketSet |
( |
|
_set | ) |
FD_ZERO((_set)) |
| #define syClearSocketFromSet |
( |
|
_sock, |
|
|
|
_set |
|
) |
| FD_CLR((_sock), (_set)) |
Remove a socket from a socket set.
- Parameters
-
| _sock | The socket to remove. |
| _set | : Socket set. |
| #define sySetDatagramSocketOptions |
( |
|
_sock | ) |
|
| #define sySetStreamSocketOptions |
( |
|
_sock | ) |
|
Detecting whether a socket is still alive
- Parameters
-
- Returns
- This method is said to work on any BSD socket system: issue select() with a zero timeout. on dead socket this should return error instead of zero
Stop socket operations and disconnect the socket if it was connected
- Parameters
-
- Returns
- NQ_SUCCESS or NQ_FAIL
- Note
- This method is said to work on any BSD socket system
Close socket
- Parameters
-
- Returns
- NQ_SUCCESS or NQ_FAIL
Listen on server socket
- Parameters
-
| sock | Socket id |
| backlog | Max number of requests in queue |
- Returns
- NQ_SUCCESS or NQ_FAIL
Create new socket
- Parameters
-
| stream | TRUE for TCP socket, FALSE for UDP socket |
| family | CM_IPADDR_IPV4 for IPv4, CM_IPADDR_IPV6 for IPv6 |
- Returns
- New socket or invalid socket handle
Bind socket to IP and port
- Parameters
-
| sock | Socket handle |
| ip | IP to bind to in NBO |
| port | Port to bind to in NBO |
| reuseAddress | Whether to reuse address |
- Returns
- NQ_SUCCESS or NQ_FAIL
Allow broadcasts on an UDP socket
- Parameters
-
- Returns
- NQ_SUCCESS or NQ_FAIL
Tune new client socket
- Parameters
-
Get IP and port the socket is bound to
- Parameters
-
| sock | Socket handle |
| ip | Buffer for IP address in NBO |
| port | Buffer for port number in NBO |
Send a UDP message to a specific addressee
- Parameters
-
| sock | Socket handle |
| buf | Data to send |
| len | Number of bytes to send |
| ip | Number of bytes to send |
| port | Port number to send to in NBO |
- Returns
- Number of bytes sent or NQ_FAIL
Connect to a remote server port
- Parameters
-
| sock | Socket handle |
| ip | IP address of the server in NBO |
| port | Port number of the server in NBO |
- Returns
- NQ_SUCCESS or NQ_FAIL
Send bytes over a connected socket
- Parameters
-
| sock | Socket handle |
| buf | Data to send |
| len | Number of bytes to send |
- Returns
- NQ_SUCCESS or NQ_FAIL
Send bytes asynchronously over a connected socket
- Parameters
-
| sock | Socket handle |
| buf | Data to send |
| len | Number of bytes to send |
| releaseFunc | Callback function for releasing the buffer |
- Returns
- NQ_SUCCESS or NQ_FAIL
Select on sockets
- Parameters
-
| pset | Pointer to the file set |
| timeout | Timeout in seconds |
- Returns
- Number of sockets with data pending, zero on timeout or NQ_FAIL on error
Receive a UDP message
- Parameters
-
| sock | Socket handle |
| buf | Receive buffer |
| len | Buffer length |
| ip | Buffer for sender IP address in NBO |
| port | Buffer for sender port in NBO |
- Returns
- Number of bytes received or NQ_FAIL
Receive a UDP message from any sender
- Parameters
-
| sock | Socket handle |
| buf | Receive buffer |
| len | Buffer length |
- Returns
- Number of bytes received or NQ_FAIL
Receive from a datagram or a TCP stream or time out if no data on sockets.
- Parameters
-
| sock | Socket handle. |
| buf | Receive buffer. |
| len | Buffer size. |
| secs | Number of seconds to wait for data on sockets. |
- Returns
- Number of bytes received or NQ_FAIL on error.
Accept client socket
- Parameters
-
| sock | Server socket handle |
| ip | Buffer for client IP address in NBO |
| port | Buffer for client port in NBO |
- Returns
- New socket ID or invalid handle
Send multicast datagram
- Parameters
-
| socket | Socket handle |
| buffer | Data to send |
| length | Number of bytes to send |
| ip | Destination IP |
| port | Destination port |
- Returns
- NQ_FAIL or number of bytes sent
Subscribe IP address to remote socket as a multicast
- Parameters
-
| socket | Remote socket handle |
| ip | Pointer to the IP address to subscribe. This value should be a multicast address in Network Byte Order (NBO). |
- Note
- This function should analyze the IP address type (either IPV4 or IPv6) and builds IP address in the system format (e.g., -sockaddr_in/sockaddr_in6) accordingly before subscribe it.